www.gusucode.com > 有监督的 CNN 网络完成对MNIST 数字的识别 > 有监督的 CNN 网络完成对MNIST 数字的识别/CNN—卷积神经网络数字识别/readMNIST.m
function [I,labels,I_test,labels_test] = readMNIST(num) % readMNIST 阅读MNIST handwriten图像数据库。 % %语法 % % [I,labels,I_test,labels_test] = readMNIST(num) % %描述 %输入: % id - 28 x28图像大小的单元阵列 % n -图像处理的数量 % -单元阵列的标签,标签对应于图像 % rand_on——参数,如果有必要定义随机选择一个对图像/标签 %输出: % I -- 28 x28训练图像大小的单元阵列 %标签——向量训练集的标签(真正的数字) % I_test - -28 x28单元阵列的测试图像的大小 % labels_test -向量的标签(真正的数字)为测试设置 % = = = = = = = = = = =加载训练集 %检查MNIST数据集 addpath('C:\Users\faschou\Desktop\CNN\CNN—卷积神经网络数字识别\MNIST');%MNIST数据及其读取程序所在的目录 path =' .\MNIST\train-images.idx3-ubyte'; if(~exist(path,'file')) error('训练集的MNIST不见了。请从http://yann.lecun.com/exdb/mnist/下载它和投入./ MNIST文件夹'); end fid = fopen(path,'r','b'); %大端法(就是高位字节排放在内存的低地址端即该值的起始地址,低位字节排放在内存的高地址端。) magicNum = fread(fid,1,'int32'); % 幻数 if(magicNum~=2051) display('Error: cant find magic number'); return; end imgNum = fread(fid,1,'int32'); %图片的数量 rowSz = fread(fid,1,'int32'); %Image height colSz = fread(fid,1,'int32'); %Image width if(num<imgNum) imgNum=num; end for k=1:imgNum I{k} = uint8(fread(fid,[rowSz colSz],'uchar')); end fclose(fid); %============载入labels path = './MNIST/train-labels.idx1-ubyte'; if(~exist(path,'file')) error('Training labels of MNIST not found. Please download it from http://yann.lecun.com/exdb/mnist/ and put to ./MNIST folder'); end fid = fopen(path,'r','b'); %大端法 magicNum = fread(fid,1,'int32'); %幻数 if(magicNum~=2049) display('Error: cant find magic number'); return; end itmNum = fread(fid,1,'int32'); %标签的数量 if(num<itmNum) itmNum=num; end labels = uint8(fread(fid,itmNum,'uint8')); %载入所有标签 fclose(fid); %============所有相同的测试集 path = './MNIST/t10k-images.idx'; if(~exist(path,'file')) error('Test images of MNIST not found. Please download it from http://yann.lecun.com/exdb/mnist/ and put to ./MNIST folder'); end fid = fopen(path,'r','b'); magicNum = fread(fid,1,'int32'); if(magicNum~=2051) display('Error: cant find magic number'); return; end imgNum = fread(fid,1,'int32'); rowSz = fread(fid,1,'int32'); colSz = fread(fid,1,'int32'); if(num<imgNum) imgNum=num; end for k=1:imgNum I_test{k} = uint8(fread(fid,[rowSz colSz],'uchar')); end fclose(fid); %============测试标签 path = './MNIST/t10k-labels.idx1-ubyte'; if(~exist(path,'file')) error('Test labels of MNIST not found. Please download it from http://yann.lecun.com/exdb/mnist/ and put to ./MNIST folder'); end fid = fopen(path,'r','b'); magicNum = fread(fid,1,'int32'); if(magicNum~=2049) display('Error: cant find magic number'); return; end itmNum = fread(fid,1,'int32'); if(num<itmNum) itmNum=num; end labels_test = uint8(fread(fid,itmNum,'uint8')); fclose(fid);